package com.yhy.wxzn.common.utils;

import lombok.SneakyThrows;

import java.lang.reflect.Field;
import java.lang.reflect.Modifier;
import java.math.BigDecimal;
import java.sql.Date;
import java.sql.Timestamp;
import java.util.ArrayList;
import java.util.List;

/**
 * @Auther: 97354
 * @Date: 2023/6/16 16:22
 * @Description: ObjectFilterHelper
 * @Version 1.0.0
 * 使用反射给实体类k赋值（默认值）
 */
public class ObjectFilterHelper {


    @SneakyThrows
    public static Object getObjDefault(Object obj) {
        // 得到类对象
        Class objCla = obj.getClass();
        Field[] fs = objCla.getDeclaredFields();
        for (int i = 0; i < fs.length; i++) {
            Field f = fs[i];
            // 设置些属性是可以访问的
            boolean isStatic = Modifier.isStatic(f.getModifiers());
            if (isStatic) {
                continue;
            }
            // 设置些属性是可以访问的
            f.setAccessible(true);
            // 得到此属性的值
            Object val = f.get(obj);
            // 得到此属性的类型
            String type = f.getType().toString();
            if ((type.endsWith("int") || type.endsWith("Integer")) && val == null) {
                f.set(obj, 0);
            }else if((type.endsWith("Boolean") || type.endsWith("boolean")) && val == null){
                f.set(obj, Boolean.FALSE);
            }else if((type.endsWith("BigDecimal") || type.endsWith("Double") || type.endsWith("double")) && val == null){
                f.set(obj, BigDecimal.ZERO);
            }
        }
        return obj;
    }

    public static List getObjDefaultList(List objList) {
        List list = new ArrayList();
        for (Object t : objList) {
            list.add(getObjDefault(t));
        }
        return list;
    }
}
